package com.ruoyi.common.utils;

import cn.hutool.core.lang.Console;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONObject;

import java.util.*;
public class SignUtils {

    /**
     * 创建通用签名
     * 通用签名算法
     * @param parameters 签名参数集
     * @param key API秘钥
     * @return
     */
    public static String createSign(JSONObject parameters, String key) throws Exception {
        Set<String> keySet = parameters.keySet();
        String[] keyArray = keySet.toArray(new String[keySet.size()]);
        Arrays.sort(keyArray);
        StringBuilder sb = new StringBuilder();
        for (String k : keyArray) {
            if (k.equals("sign")) {
                continue;
            }
            // 参数值为空，则不参与签名
            if (parameters.get(k)!=null && parameters.getStr(k).trim().length() > 0) {
                sb.append(k).append("=").append(parameters.getStr(k).trim()).append("&");
            }
        }
        sb.append("key=").append(key);
        //MD5加密,结果转换为大写字符
        return SecureUtil.md5(sb.toString()).toUpperCase();
    }
}
